package cn.itrip.order.service;

import cn.itrip.dto.Dto;
import cn.itrip.pojo.*;
import cn.itrip.utlis.Page;
import cn.itrip.vo.OrderSelectCondition;
import cn.itrip.vo.order.*;
import cn.itrip.vo.store.StoreVO;

import java.util.List;
import java.util.Map;

public interface OrderService {


    /**
     * 验证token是否存在
     */
    public boolean exitToken(String agent,String token)throws Exception;

    /**
     * 根据订单id 查询个人订单详情
     */
    public ItripPersonalHotelOrderVO findByOrderId(long orderId)throws Exception;

    /**
     * 根据订单id 查询个人订单详情
     */
    public ItripHotelOrder findByOrderId1(long orderId);

    /**
     * 根据条件查询订单的总数
     */
    public int findOrderByQuery(OrderSelectCondition orderSelectCondition)throws Exception;

    /**
     * 条件查询+分页
     * @param orderSelectCondition
     * @return
     * @throws Exception
     */
    public Page<ItripListHotelOrderVO> findOrderBypage(OrderSelectCondition orderSelectCondition,Integer pageNo,Integer pageSize)throws  Exception;


    /**
     * 根据订单id获取订单信息
     */
    public ItripModifyHotelOrderVO findByIdForOrder(long orderId)throws Exception;

    /**
     * 根据订单id删除订单
     * @param orderId
     * @return
     * @throws Exception
     */
    public int deleteByOrderId(long orderId) throws Exception;

    /**
     * 根据酒店的id 查询酒店的信息
     * @param id
     * @return
     * @throws Exception
     */
    public ItripHotel findByHotelId(Long id)throws Exception;


    /**
     * 根据房间id查询房间详细信息
     */
    public ItripHotelRoom findByRoomId(Long id)throws Exception;

    /**
     * 根据客户选择的信息查询房间的信息
     */
    public List<StoreVO> findByQuery(ValidateRoomStoreVO validateRoomStoreVO)throws Exception;

    /**
     * 添加订单信息
     */
    public int addOrderInfo(ItripHotelOrder itripHotelOrder)throws  Exception;

    /**
     * 根据用户id查取用户信息
     */
    public ItripUserLinkUser findByUserId(Long id);

    /**
     * 根据用户ID查询旅客信息
     * @param userId
     * @return
     * @throws Exception
     */
    public List findLinkUserByUserId(long userId)throws  Exception;

    /**
     * 根据用户ID查询入住信息
     * @param orderId
     * @return
     * @throws Exception
     */
    public ItripPersonalOrderRoomVO getItripHotelOrderRoomInfoById(long orderId)throws  Exception;

    /**
     * 取消订单
     * @return
     * @throws Exception
     */
    public boolean flushCancleOrderStatus() throws Exception;

    /**
     * 待评价状态修改
     * @return
     * @throws Exception
     */
    public boolean flushCommentlOrderStatus() throws Exception;
}